From bb752566a31029df4ca2c8a2d7fca6680570bfe6 Mon Sep 17 00:00:00 2001
From: phunkyfish <phunkyfish@gmail.com>
Date: Thu, 8 Oct 2020 16:10:44 +0100
Subject: [PATCH] Remove charset converter dependency

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 src/windows/FileUtils.cpp | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/windows/FileUtils.cpp b/src/windows/FileUtils.cpp
index 0c8a03e..f829b2a 100644
--- a/src/windows/FileUtils.cpp
+++ b/src/windows/FileUtils.cpp
@@ -6,24 +6,36 @@
  */
 
 #include "../FileUtils.h"
-#include "p8-platform/windows/CharsetConverter.h"
 #include <string>
 #include "../utils.h"
 #ifdef TARGET_WINDOWS_DESKTOP
 #include <Shlobj.h>
 #endif
 
-#ifdef TARGET_WINDOWS
 #include <windows.h>
 #include <fileapi.h>
-#endif
+
+std::wstring ToW(const char* str, size_t length)
+{
+  int result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, length, nullptr, 0);
+  if (result == 0)
+    return std::wstring();
+
+  auto newStr = std::make_unique<wchar_t[]>(result);
+  result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, length, newStr.get(), result);
+
+  if (result == 0)
+    return std::wstring();
+
+  return std::wstring(newStr.get(), result);
+}
 
 namespace OS
 {
   bool CFile::Exists(const std::string& strFileName, long* errCode)
   {
     std::string strWinFile = ToWindowsPath(strFileName);
-    std::wstring strWFile = p8::windows::ToW(strWinFile.c_str());
+    std::wstring strWFile = ToW(strWinFile.c_str(), 0);
     DWORD dwAttr = GetFileAttributesW(strWFile.c_str());
 
     if(dwAttr != 0xffffffff)
